设计模式面试题

责任链模式?

是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。

将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。
以上定义来自《设计模式之美》

责任链模式和分发模式的区别

观察者模式和 callback 有什么区别?什么时候用观察者,什么时候用 callback?

观察者模式和回调函数模式及其相似,差别仅在于在观察者模式中,被观察者维护这一个观察者列表,而在回调模式中," 被观察者 " 只是保存了一个 " 观察者 "。这就是形式上的终极区别。
也就是说,回调函数是一种特殊的观察者模式,是一种一对一的观察者模式。
如果用 List 保存了多个 callback,callback 和观察者模式没啥区别

状态机

有限状态机(finite state machine)简称 FSM;状态机就是包含多个状态的数学模型,并可以在状态之间进行变换并且触发一些动作。
一个状态机一般包含以下几个元素:

  1. State 当前状态
  2. Event 触发事件
  3. Transition 状态变换,或者说下一个状态 (次态)
  4. Action 要执行的动作

面试题

项目中用了哪些设计模式?

  1. 单例
  2. 构建者模式
  3. 简单工厂模式
  4. 代理模式
  5. 模板方法
  6. 责任链模式
  7. 状态模式